﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
using System.Windows.Forms;

namespace CIRDiagnoseDevice.Control
{
    class Xml_HeluQi
    {
        string filename = Application.StartupPath + "\\" + "HeLuQiFirsttestvalue.xml";
        XmlDocument myDoc;
        bool xmlexist;
        /// <summary>
        /// 合路器的初始值文件是否存在
        /// </summary>
        public bool Xmlexist
        {
            get
            { return xmlexist; }
        }

        public Xml_HeluQi()
        {
            
            //加载XML文件
            if (File.Exists(filename))
            {
                xmlexist = true; 
                this.myDoc = new XmlDocument();
                this.myDoc.Load(filename);

            }
            else
            {
                xmlexist = false;
                XmlDocument xmldoc = new XmlDocument();
                //加入XML的声明段落
                xmldoc.AppendChild(xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null));
                //加入根元素
                XmlElement xmlelem = xmldoc.CreateElement("", "HeLuQitest", "");
                
                xmldoc.AppendChild(xmlelem);
                xmldoc.Save(filename);
               this.myDoc=xmldoc ; 
            }

        }
        //<?xml version="1.0"?>
        //<HeLuQitest>
        //  <testvalue_withoutHLQ>
        //    <450M>34</450M>
        //    <800M>341</800M>
        //    <GSM_R>34</GSM_R>
        //  </testvalue_withoutHLQ> 
        //</HeLuQitest>  
        /// <summary>
        /// //WriteXml 完成对testvalue_withoutHLQ的添加操作
        /// </summary>
        /// <param name="_450M"> //_450 450m的没有接合路器的功率</param>
        /// <param name="_800M">//_800 800m的没有接合路器的功率</param>
        /// <param name="GSM_R">//GSM_R gsm_r的没有接合路器的功率</param>
        public void WriteXML(string _450M, string _800M, string GSM_R)
        {

            //添加元素--450M
            XmlElement ele = myDoc.CreateElement("_450M");
            XmlText text = myDoc.CreateTextNode(_450M);

            //添加元素--800M
            XmlElement ele1 = myDoc.CreateElement("_800M");
            XmlText text1 = myDoc.CreateTextNode(_800M);

            //添加元素--GSM_R
            XmlElement ele2 = myDoc.CreateElement("GSM_R");
            XmlText text2 = myDoc.CreateTextNode(GSM_R);

            //添加节点  
            XmlNode newElem = myDoc.CreateNode("element", "testvalue_withoutHLQ", "");

            //在节点中添加元素
            newElem.AppendChild(ele);
            newElem.LastChild.AppendChild(text);
            newElem.AppendChild(ele1);
            newElem.LastChild.AppendChild(text1);
            newElem.AppendChild(ele2);
            newElem.LastChild.AppendChild(text2);

            //将节点添加到文档中
            XmlElement root = myDoc.DocumentElement;
            root.AppendChild(newElem);

            //保存
            myDoc.Save(filename);

        }

        //DeleteNode 完成对testvalue_withoutHLQ的添加操作 
        //filename 当前xml文件的存放位置 

        public void DeleteNode(string notename)
        {


            //搜索指定某列，一般是主键列
            XmlNodeList myNode = myDoc.SelectNodes("//testvalue_withoutHLQ");


            //判断是否有这个节点

            if (!(myNode == null))
            {
                //遍历节点，找到符合条件的元素

                foreach (XmlNode xn in myNode)
                {
                    // if (xn.InnerXml == notename)
                    //删除元素的父节点
                    xn.RemoveAll();
                }
            }

            //保存
            myDoc.Save(filename);

        }

        //WriteXml 完成对xml的修改操作
        //filename 当前xml文件的存放位置
        //node 表示要操作的名字
        //value 表示要修改的值

        public void UpdateXML(string node, string value)
        {


            //搜索指定的节点
            System.Xml.XmlNodeList nodes = myDoc.SelectNodes("//testvalue_withoutHLQ");

            if (nodes != null)
            {
                foreach (System.Xml.XmlNode xn in nodes)
                {

                    xn.SelectSingleNode(node).InnerText = value;

                }
            }

            myDoc.Save(filename);

        }
        /// <summary>
        ///  得到node的值。_450M；_800M；GSM_R（以后可以建一个枚举）
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        public string GetXmlValue(string node)
        {

            //搜索指定的节点
            System.Xml.XmlNodeList nodes = myDoc.SelectNodes("//testvalue_withoutHLQ");

            if (nodes != null)
            {
                foreach (System.Xml.XmlNode xn in nodes)
                {

                   return xn.SelectSingleNode(node).InnerText;

                }
            }
            return "";

        }
    }
}
